import { Dayjs } from "dayjs"

import { TimeRange } from "@/utils"
export interface IProxyDepositRecordListParams {
	appStatus?: string
	appType?: string
	channelName?: string
	currency?: string
	eventId?: string
	eventTimeEnd?: string
	eventTimeStart?: string
	merchantId?: string
	orderStatus?: string
	pageNum: number
	pageSize: number
	payMerchantName?: string
	payType?: string
	realName?: string
	userName?: string
	searchTime?: TimeRange
	timeFlag?: string
	payTimeEnd?: string
	payTimeStart?: string
}

export interface IProxyDepositRecordItemResponse {
	appTypeStr: string
	bizTypeStr: string
	channelName: string
	clientStatusStr: string
	creditLevel: number
	currency: string
	deviceNo: string
	deviceNoWindControl: string
	eventId: string
	eventTime: string
	ip: string
	ipWindControl: string
	merchantId: number | null
	merchantName: string
	orderAmount: number
	orderAmountCny: number
	orderAmountUsdt: number
	orderStatus: number
	orderStatusStr: string
	parentProxyName: string | null
	payMerchantName: string
	payTime: string | null
	payType: number
	payTypeStr: string
	realAmount: number
	realAmountCny: number
	realAmountUsdt: number
	realName: string | null
	remark: string | null
	symbolCny: string
	symbolUsdt: string
	thirdOrderNo: number | null
	topProxyName: string
	usdtRate: number
	userName: string
	userType: number
	vipLevel: number
}
export interface IProxyDepositSummaryResponse {
	orderAmountPageSumCNY: number | undefined
	orderAmountPageSumUSDT: number | undefined
	orderAmountTotalSumCNY: number | undefined
	orderAmountTotalSumUSDT: number | undefined
	realAmountPageSumCNY: number | undefined
	realAmountPageSumUSDT: number | undefined
	realAmountTotalSumCNY: number | undefined
	realAmountTotalSumUSDT: number | undefined
}

export interface IQueryMemberDepositRecordParams {
	appType?: number
	channelName?: string
	clientStatus?: number
	currency?: string
	eventId?: string
	eventTimeEnd?: string
	eventTimeStart?: string
	exportFlag?: boolean
	i18nFlag?: boolean
	ip?: string
	merchantId?: number
	orderKey?: string
	orderStatus?: number
	pageNum?: number
	pageSize?: number
	payMerchantName?: string
	payTimeEnd?: string
	payTimeStart?: string
	payType?: number
	realName?: string
	sortType?: string
	userName?: string
	userType?: number
	vipLevelMax?: number
	vipLevelMin?: number
	startTime?: string
	endTime?: string
}

export interface IMemberDepositRecordList {
	pageNum?: number
	pageSize?: number
	record?: IMemberDepositRecord[]
	summary?: IMemberDepositRecordSummary
	totalPage?: number
	totalRecord?: number
}

export interface IMemberDepositRecord {
	appTypeStr?: string
	bizTypeStr?: string
	channelName?: string
	clientStatusStr?: string
	creditLevel?: number
	currency?: string
	deviceNo?: string
	deviceNoWindControl?: string
	eventId?: string
	eventTime?: string
	ip?: string
	ipWindControl?: string
	merchantId?: number
	merchantName?: string
	orderAmount?: number
	orderAmountCny?: number
	orderAmountUsdt?: number
	orderStatus?: number
	orderStatusStr?: string
	parentProxyName?: string
	payMerchantName?: string
	payTime?: string
	payType?: number
	payTypeStr?: string
	realAmount?: number
	realAmountCny?: number
	realAmountUsdt?: number
	realName?: string
	remark?: string
	symbolCny?: string
	symbolUsdt?: string
	thirdOrderNo?: string
	topProxyName?: string
	usdtRate?: number
	userName?: string
	userType?: number
	vipLevel?: number
}

export interface IMemberDepositRecordSummary {
	orderAmountPageSumCNY?: string
	orderAmountPageSumUSDT?: string
	orderAmountTotalSumCNY?: string
	orderAmountTotalSumUSDT?: string
	realAmountPageSumCNY?: string
	realAmountPageSumUSDT?: string
	realAmountTotalSumCNY?: string
	realAmountTotalSumUSDT?: string
}

export interface IQueryMemberWithdrawRecordParams {
	appType?: number
	bigWithdraw?: number
	channelName?: string
	clientStatus?: number
	currency?: string
	eventId?: string
	eventTimeEnd?: string
	eventTimeStart?: string
	firstWithdrawStatus?: number
	merchantId?: number
	orderStatus?: number
	pageNum?: number
	pageSize?: number
	payMerchantName?: string
	payTimeEnd?: string
	payTimeStart?: string
	userName?: string
	withdrawType?: number
	startTime?: string
	endTime?: string
}

export interface IMemberWithdrawRecordList {
	pageNum?: number
	pageSize?: number
	record?: IMemberWithdrawRecord[]
	summary?: IMemberWithdrawSummary
	totalPage?: number
	totalRecord?: number
}

export interface IMemberWithdrawSummary {
	orderAmountPageCNY?: string
	orderAmountPageUSDT?: string
	orderAmountTotalCNY?: string
	orderAmountTotalUSDT?: string
}

export interface IMemberWithdrawRecord {
	audit1Desc?: string
	audit2Desc?: string
	audit3Desc?: string
	confirmDesc?: string
	eventId?: string
	symbolCny?: string
	symbolUsdt?: string
	thirdOrderNo?: string
	userName?: string
	merchantName?: string
	appType?: number
	orderStatus?: number
	clientStatus?: number
	ip?: string
	ipWindControl?: string
	deviceNo?: string
	deviceNoWindControl?: string
	payMerchantName?: string
	withdrawType?: number
	currency?: string
	channelName?: string
	bankcardNo?: string
	bankName?: string
	realName?: string
	usdtAddress?: string
	usdtType?: number
	orderAmountUsdt?: number
	orderAmountCny?: number
	firstWithdrawStatus?: number
	bigWithdraw?: number
	eventTime?: string
	payTime?: string
	remark?: string
	confirmClientDesc?: string
}

export interface IProxyDepositRecordListParams {
	appStatus?: string
	appType?: string
	channelName?: string
	currency?: string
	eventId?: string
	eventTimeEnd?: string
	eventTimeStart?: string
	merchantId?: string
	orderStatus?: string
	pageNum: number
	pageSize: number
	payMerchantName?: string
	payType?: string
	realName?: string
	userName?: string
	searchTime?: TimeRange
	timeFlag?: string
	payTimeEnd?: string
	payTimeStart?: string
}

export interface IProxyDepositRecordItemResponse {
	appTypeStr: string
	bizTypeStr: string
	channelName: string
	clientStatusStr: string
	creditLevel: number
	currency: string
	deviceNo: string
	deviceNoWindControl: string
	eventId: string
	eventTime: string
	ip: string
	ipWindControl: string
	merchantId: number | null
	merchantName: string
	orderAmount: number
	orderAmountCny: number
	orderAmountUsdt: number
	orderStatus: number
	orderStatusStr: string
	parentProxyName: string | null
	payMerchantName: string
	payTime: string | null
	payType: number
	payTypeStr: string
	realAmount: number
	realAmountCny: number
	realAmountUsdt: number
	realName: string | null
	remark: string | null
	symbolCny: string
	symbolUsdt: string
	thirdOrderNo: number | null
	topProxyName: string
	usdtRate: number
	userName: string
	userType: number
	vipLevel: number
}
export interface IProxyDepositSummaryResponse {
	orderAmountPageSumCNY: number | undefined
	orderAmountPageSumUSDT: number | undefined
	orderAmountTotalSumCNY: number | undefined
	orderAmountTotalSumUSDT: number | undefined
	realAmountPageSumCNY: number | undefined
	realAmountPageSumUSDT: number | undefined
	realAmountTotalSumCNY: number | undefined
	realAmountTotalSumUSDT: number | undefined
}

export interface IProxyWithdrawItemResponse {
	appType: number
	audit1Desc?: string
	audit2Desc?: string
	audit3Desc?: string
	bankName: string
	bankcardNo: string
	bigWithdraw: number
	channelName: string
	clientStatus: number
	confirmClientDesc: string
	confirmDesc?: string
	currency: string
	deviceNo: string
	deviceNoWindControl: string
	eventId: string
	eventTime: string
	firstWithdrawStatus: number
	ip: string
	ipWindControl: string
	merchantName: string
	orderAmountCny: number
	orderAmountUsdt: number
	orderStatus: number
	payMerchantName: string
	payTime?: string
	realName: string
	remark: string
	symbolCny: string
	symbolUsdt: string
	thirdOrderNo: string
	usdtAddress?: string
	usdtType?: number
	userName: string
	withdrawType: number
}

export interface IProxyWithdrawListParams {
	appType?: string | number
	bigWithdraw?: string
	channelName?: string
	clientStatus?: string
	currency?: string
	eventId?: string
	firstWithdrawStatus?: string
	merchantId?: string
	orderStatus?: string
	pageNum?: number
	pageSize?: number
	payMerchantName?: string
	payTimeEnd?: string
	payTimeStart?: string
	userName?: string
	withdrawType?: string
	searchTime?: TimeRange
	timeFlag?: string
}

export interface IProxyWithdrawSummary {
	orderAmountPageCNY?: number
	orderAmountPageUSDT?: number
	orderAmountTotalCNY?: number
	orderAmountTotalUSDT?: number
}

export interface IQueryMemberRebateRecordParams {
	cycleType?: number
	endTime?: string
	merchantId?: string
	orderNo?: string
	orderStatus?: string
	pageNum?: number
	pageSize?: number
	proxyName?: string
	rebateAmountMax?: number
	rebateAmountMin?: number
	startTime?: string
	topProxyName?: string
}

export interface IMemberRebateDetailParams {
	cycleType?: number
	endTime?: string
	merchantId?: string
	orderNo?: string
	orderStatus?: string
	pageNum?: number
	pageSize?: number
	proxyName?: string
	rebateAmountMax?: number
	rebateAmountMin?: number
	startTime?: string
	topProxyName?: string
}

export interface IMemberTeamBillParams {
	pageNum?: number
	pageSize?: number
	periodType?: number
}

export interface IMemberTeamListPageParams {
	cycleEndDate?: number
	cycleStartDate?: number
	memberType?: number
	pageNum?: number
	pageSize?: number
	periodType?: number
	searchMemberName?: string
}

export interface IMemberTeamDetailsPageParams {
	cycleEndDate?: string | number
	cycleStartDate?: string | number
	memberId?: number
}

export interface IMemberRebateDetailList {
	pageNum: number
	pageSize: number
	record: IMemberRebateDetailRecord[]
	summary: string
	totalPage: number
	totalRecord: number
}

export interface IMemberRebateSummaryList {
	createAt: number
	createAt2: string
	gameTypeName: string
	orderNo: string
	parentProxyName: string
	rebateAmount: number
	rebateRate: number
	validBetAmount: number
	venueName: string
}

export interface IMemberTeamBillDetailRecord {
	billType: number
	periodEnDate: number
	periodStDate: number
}

export interface IMemberTeamBillList {
	pageNum: number
	pageSize: number
	record: IMemberTeamBillDetailRecord[]
	summary: string
	totalPage: number
	totalRecord: number
}

export interface IMemberRebateDetailRecord {
	createAt?: string
	createAt2?: string
	gameTypeName?: string
	orderNo?: string
	parentProxyName?: string
	rebateAmount?: number
	rebateRate?: number
	validBetAmount?: number
	venueName?: string
}

export interface IMemberRebateRecordList {
	pageNum?: number
	pageSize?: number
	record?: IMemberRebateRecord[]
	summary?: Object
	totalPage?: 0
	totalRecord?: 0
}

export interface IMemberRebateRecord {
	createdAt?: string
	memberId?: number
	merchantId?: number
	merchantName?: string
	nickName?: string
	orderNo?: string
	parentProxyId?: number
	payoutTime?: string
	rebateAmount?: number
	reportDate?: number
	topMerchantName?: string
	userName?: string
}

export interface ILevelListQueryParams {
	createdAtEnd?: string
	createdAtStart?: string
	id: string
	merchantId: string
	reportDate?: string
}

export interface ILevelLinkResponseItem {
	businessModel: number
	childList: ILevelLinkResponseItem[]
	directlyUnderProxyNum: number
	hasChild: boolean
	hasParent: boolean
	id: string
	merchantId: string
	parentProxyId: number
	parentProxyName: string | null
	proxyLevel: number
	proxyLevelName: string
	proxyPath: string
	underProxyNum: number
	userName: string
	key: string
	children?: ILevelLinkResponseItem[]
}

export interface ILevelListQueryParams {
	createdAtEnd?: string
	createdAtStart?: string
	id: string
	merchantId: string
	reportDate?: string
}
export interface IDetailRes {
	accountWindControl: string
	appTypeStr: string
	audit1Desc: string
	audit1Operator: string
	audit1Result: number
	audit1Time: string
	audit2Desc: any
	audit2Operator: any
	audit2Result: any
	audit2Time: any
	audit3Desc: any
	audit3Operator: any
	audit3Result: any
	audit3Time: any
	bankCardAddress: any
	bankCardRealName: any
	bankName: any
	bankcardNo: any
	bankcardWindControl: string
	bigWithdraw: number
	bindBankCardCount: number
	bindVirtualCount: number
	cash: number
	channelName: string
	completeAmount: number
	confirmDesc: any
	confirmOperator: any
	confirmResult: any
	confirmTime: any
	createdAt: string
	creditAvailable: number
	creditTotal: number
	deviceNo: string
	deviceNoWindControl: string
	eventId: string
	firstWithdrawStatus: number
	gameLockStatus: number
	imageUrls: any
	ip: string
	ipAttribution: string
	ipWindControl: string
	labelName: any
	lastBetTime: string
	lastLoginDatetime: string
	lastWithdrawAmountCny: number
	lastWithdrawAmountUsdt: number
	lastWithdrawChannel: string
	lastWithdrawStatus: number
	lastWithdrawTime: string
	lastWithdrawType: number
	loginLockStatus: number
	merchantName: string
	netAsset: number
	nickName: string
	orderAmountCny: number
	orderAmountUsdt: number
	parentProxyName: string
	paymentLockStatus: number
	realName: string
	registerIp: string
	registryAppTypeStr: string
	remainAmount: number
	remark: any
	snapshotTine: string
	symbolCny: string
	symbolUsdt: string
	teamNetAsset: number
	teamShouldRepay: number
	teamWithdrawAmount: number
	thirdOrderNo: any
	todayCanWithdrawAmount: number
	todayCanWithdrawCount: number
	todayWithdrawAmount: number
	todayWithdrawCount: number
	totalDeposit: number
	totalDepositNum: number
	totalDepositWithdrawSub: number
	totalWithdraw: number
	totalWithdrawNum: number
	usdtAddress: string
	usdtType: number
	userName: string
	validAmount: number
	virtualAccountWindControl: string
	virtualCurrencyType: any
	withdrawInfo: string
	withdrawLimitType: number
	withdrawType: number
}

export interface IOptPage {
	pageCode: number
	pageName: string
	sectionCode: number
	sectionName: string
}

export interface IAccountOptLog {
	sectionName: string
	pageName: string
	optTypeDesc: string
	optFuncDesc: string
	optObj: string
	optUsername: string
	optUserTypeDesc: string
	merchantName: string
	optIp: string
	createdAt: string
	optBefore: string
	optAfter: string
	remark: string
}

export interface IAccountOptLogParams {
	createdAtEnd?: string
	optIp?: string
	merchantId?: string
	createdAtStart?: string
	createdAt: TimeRange
	pageCode?: number
	sectionCode?: number
}

export interface IAgentIncomeAmountOperationRecordList {
	id?: string
	reportDate?: string
	cycleStartDate?: string
	cycleEndDate?: string
	proxyId?: string
	proxyName?: string
	merchantId?: string
	merchantName?: string
	adjustAmount?: number
	adjustType?: number
	beforeIssueShouldAmount?: number
	afterIssueShouldAmount?: number
	operatorId?: string
	operatorName?: string
	operatorDate?: string
	remark?: string
	businessModel?: number
}

export interface IQueryAgentIncomeAmountOperationRecordList {
	businessModel?: string
	merchantId?: string
	operationEndTime?: string | Dayjs
	operationName?: string
	operationStartTime?: string | Dayjs
	pageNum?: number
	pageSize?: number
	proxyName?: string
	registerTime?: any
}

export interface IOutLineInfoParams {
	userName: string
	merchantId?: string
}

export interface IOutLineInfoResponse {
	commissionModel: number
	accountType: number | string
	auditList: any[]
	balance: number
	birthday: string | null
	bmhUserId: string
	bmhUsername: string
	businessModel: number
	clubId: string | null
	clubName: string | null
	createdAt: string
	creditAvailable: number
	creditBalance: number
	creditLevel: number
	creditShouldRepayment: number | null
	currency: string
	email: string | null
	firstDeposit: number | null
	firstDepositDatetime: string | null
	gameLockStatus: number
	gender: number
	id: string
	invitationCode: string
	ipWindControlName: string
	labelId: number
	labelName: string | null
	lastDeposit: number
	lastLoginDatetime: string
	lastLoginDeviceNo: string
	lastLoginIp: string
	liquidationStatus: number
	loginLockStatus: number
	merchantId: string
	merchantName: string
	merchantPath: string
	mobile: string | null
	nickName: string
	parentMerchantId: number
	parentMerchantPath: string
	parentProxyId: string
	parentProxyLevel: string
	parentProxyLevelName: string
	parentProxyName: string
	parentProxyPath: string
	paymentLockStatus: number
	realName: string | null
	rebateFreezeStatus: number
	registerDeviceNo: string
	registerDeviceType: number
	registerIp: string
	remark: string | null
	topImagesUrl: string
	topMerchantId: string
	topMerchantName: string
	topProxyId: string
	topProxyName: string
	totalBigWithdrawNum: number
	totalDeposit: number
	totalDepositNum: number
	totalWithdraw: number
	totalWithdrawNum: number
	transforNum: number
	updatedAt: string
	userName: string
	vipExperience: number
	vipId: number
	vipLevel: number
	virAddr: string | null
	windControlId: number
	windControlName: string
}

export interface IQueryProxyIncomeRecord {
	businessModel?: string
	merchantId?: string
	operationEndTime?: string | Dayjs
	operationName?: string
	operationStartTime?: string | Dayjs
	pageNum?: number
	pageSize?: number
	proxyName?: string
	cycleTime?: any
	receiveTime?: any
	proxyLevel?: any
	payoutStatusList?: number[]
	personRebateAmountMin?: string
	personRebateAmountMax?: string
	maxIncomeAmount?: string
	minIncomeAmount?: string
}

export interface IQueryIncomeCheckList {
	lockStatus: number
	orderNo: string
	startTime: number
	endTime: number
	proxyName: string
	proxyLevel: 1
	parentProxyName: string
	topProxyName: string
	dxServiceFeeRebateAmount: number
	dxInsurancePartsAmount: number
	otherVenueRebateAmount: number
	otherVenuePartsAmount: null
	currentIncomeAmount: number
	adjustIncomeAmount: number
	realIncomeAmount: number
	auditStatus: number
	lockTime: string
	auditName: string
	applyTime: string
	payoutStatus: number
	payoutTime: null
	audit1Operator: null
	audit1Time: null
	audit1Desc: null
	audit1Result: number
	audit1Cost: number
	audit2Operator: null
	audit2Time: null
	audit2Desc: null
	audit2Result: number
	audit2Cost: number
	version: number
	proxyId: string
	merchantId: string
	reportDate: number
	businessModel: number
	billFlag: number
	valueAddedTotalAmount: number
	registerTime: any
}

export interface IQueryIncomeCheckListParams {
	businessModel?: string
	createdAt?: string
	createdAtBegin?: string
	createdAtEnd?: string
	createdBy?: string
	merchantId?: string
	userName?: string
	registerTime?: any
	proxyLevel?: string
}

export interface IFundsResponseItem {
	accountStatus: null | string
	audit1Cost: number
	audit1Desc: string
	audit1Operator: string
	audit1Result: number
	audit1Time: string
	audit2Cost: number
	audit2Desc: string
	audit2Operator: string
	audit2Result: number
	audit2Time: string
	createdTime: string
	currency: string
	cycleEndDate: number
	cycleName: string
	cycleStartDate: number
	id: string
	merchantId: string
	merchantName: string
	orderNo: string
	orderStatus: number
	personRebateAmount: number
	proxyId: string
	proxyLevelName: string
	proxyName: string
	rebateAdjustAmount: null | number
	rebateAmount: number
	reportDate: number
	topProxyId: string
	topProxyName: string
}

export interface IqueryDetailNew {
	id?: string
	merchantId?: string
	merchantName?: string
	merchantPath?: string
	parentMerchantId?: 0
}

export interface IAuditList {
	id?: string
	merchantId?: string
	merchantName?: string
	merchantPath?: string
	parentMerchantId?: 0
	endTime?: string
	startTime?: string
}

export interface IRevenueDetails {
	venueName?: string
	venueType?: string
	clubAmount?: number
	rebateRate?: number
	rebateAmount?: number
	underProxyAmount?: number
	memberRebateAmountByProxy?: number
	incomeAmount?: number
	partRebateAmount?: number
	netAmount?: number
	zhanchengRate?: number
	underProxyNetAmount?: number
	commissionNetAmount?: number
	incomeNetAmount?: number
	billFlag?: number
	fundsAuditDetailRespList?: any
}

export interface IGetArtificialDepositListParams {
	userType?: number
	adjustAmountMin?: number
	adjustAmountMax?: number
	merchantId?: string
	userName?: string
	orderStatus?: number
	eventId?: string
	adjustType?: number
	timeType?: number
	timeStart?: string
	timeEnd?: string
	topProxyUsername?: string
	pageNum?: number
	pageSize?: number
}

export interface IArtificialDepositList {
	pageSize: number
	pageNum: number
	totalRecord: number
	totalPage: number
	record: IArtificialDepositListRecord[]
	summary: IArtificialDepositListSummary
}

export interface IArtificialDepositListRecord {
	id: string
	merchantId: string
	merchantName: string
	eventId: string
	userId: string
	changeType: string
	userType: string
	userName: string
	parentProxyName: string
	topProxyName: string
	adjustType: string
	walletType: string
	adjustAmount: number
	currency: string
	operator: string
	remark: string
	orderStatus: string
	audit2Time: string
	createdAt: string
	updatedAt: string
	imageAddress: string
}

export interface IArtificialDepositListSummary {
	adjustAmountPageSum: string
	adjustAmountTotalSum: string
}
